precision mediump float;
uniform vec2 u_resolution;
uniform float u_time;

void main(void) {
    // 将像素坐标归一化（区间 [0.0, 1.0]）
    vec2 uv = gl_FragCoord.xy / u_resolution.xy;
    
    // 波浪参数
    float amplitude = 0.03;         // 减小振幅以获得更自然的水面效果
    float angularVelocity = 15.0;   // 增加角速度创建更多波纹
    float frequency = 3.0;          // 调整频率控制波动速度
    float waterLevel = 0.5;         // 水面基础高度
    float initialPhase = frequency * u_time;
    
    // 创建多个波浪叠加效果，模拟更真实的水面
    float wave1 = amplitude * sin((angularVelocity * uv.x) + initialPhase);
    float wave2 = (amplitude * 0.5) * sin(((angularVelocity * 1.7) * uv.x) + (initialPhase * 1.3));
    float wave3 = (amplitude * 0.3) * sin(((angularVelocity * 3.3) * uv.x) + (initialPhase * 0.7));
    
    // 合成波浪效果
    float totalWave = wave1 + wave2 + wave3 + waterLevel;
    
    // 实现水面波动效果
    vec4 color;
    if (uv.y < totalWave) {
        // 水面以下区域 - 使用渐变色模拟水的深度效果
        float depth = (totalWave - uv.y) / amplitude;
        vec3 waterColor = mix(vec3(0.0, 0.6, 0.9), vec3(0.0, 0.3, 0.6), depth);
        color = vec4(waterColor, 1.0);
    } else {
        // 水面以上区域 - 空气/天空颜色
        color = vec4(0.0, 0.0, 0.0, 1.0);
    }
    
    // 输出到屏幕
    gl_FragColor = color;
}